Saltar al contenido principal

🎸 Proyecto: PyChella Festival Manager

Bienvenido al equipo de producción de PyChella, el festival de música más grande del código fuente. Tu trabajo es desarrollar el sistema para gestionar a los artistas, los escenarios y los horarios del evento.

Este proyecto evaluará tus conocimientos en Programación Orientada a Objetos y el uso avanzado de Listas y Diccionarios.


📋 Requisitos del Proyecto​

1. Sistema de Artistas (artistas.py)​

Debes crear una jerarquía de clases para representar a los talentos contratados.

Clase Base: Artista​

  • Atributos:
    • nombre: (str) Nombre artístico.
    • cache: (float) Lo que cobra por actuar.
    • genero: (str) Rock, Pop, Techno, Indie, etc.
  • Métodos:
    • __init__: Constructor.
    • __str__: Devuelve una ficha del artista (Nombre - Género - Caché).
    • actuar(): Método genérico que imprime: "El artista [nombre] está actuando".
    • Método Mágico __lt__: Necesario para poder ordenar artistas. La comparación debe hacerse por caché (de menor a mayor o viceversa, como prefieras, pero constante).

Subclase: Banda​

Grupos formados por varias personas.

  • Hereda de: Artista.
  • Atributos extra:
    • integrantes: Una lista de nombres (strings).
  • Polimorfismo:
    • actuar(): Debe imprimir "La banda [nombre] saluda: ¡Hola PyChella! Somos [lista_integrantes]".

Subclase: DJ​

Artistas electrónicos.

  • Hereda de: Artista.
  • Atributos extra:
    • equipo: (str) Por ejemplo "Mesa Pioneer", "Portátil", "Vinilos".
  • Polimorfismo:
    • actuar(): Debe imprimir "El DJ [nombre] comienza a mezclar con su [equipo]".

2. El Organizador (festival.py)​

Aquí demostrarás tu destreza con las estructuras de datos.

Clase: Festival​

  • Atributos:

    • nombre: Nombre del evento.
    • escenarios: Un diccionario que representa los escenarios y sus line-ups.
      • Clave: Nombre del escenario (ej: "Main Stage", "Techno Tent").
      • Valor: Una lista que contendrá objetos de tipo Artista.
      • Inicialización recomendada: Puedes iniciar el diccionario con claves vacías en el constructor.
  • Métodos:

    • contratar_artista(artista, nombre_escenario):
      1. Verifica si el nombre_escenario existe en el diccionario.
      2. Si existe, añade el objeto artista a la lista correspondiente.
      3. Si no existe, muestra un error.
    • ver_cartel(): Recorre el diccionario de escenarios y, para cada uno, imprime la lista de artistas que actuarán allí. (Usa el __str__ de los artistas).
    • buscar_por_genero(genero):
      • Debe recorrer todos los escenarios.
      • Devuelve una nueva lista con todos los artistas que coincidan con ese género, sin importar en qué escenario toquen.

3. Programa Principal (main.py)​

Crea un script que simule la gestión del festival:

  1. Crea un Festival con al menos 2 escenarios (ej: "Principal" y "Electrónica").
  2. Instancia varios artistas:
    • Alguna Banda famosa.
    • Algún DJ.
    • Algún Artista solista (instancia de la clase base).
  3. Usa contratar_artista para colocarlos en sus escenarios.
  4. Llama a ver_cartel para comprobar qué tal queda la organización.
  5. ¡Que empiece el show! Haz que los artistas de un escenario ejecuten su método actuar().
  6. Prueba de ordenación: Consigue la lista de un escenario y ordénala por caché usando sort() (gracias a __lt__).

🌟 Puntos Extra​

  • Presupuesto: Añade un método en Festival que calcule el coste total sumando el cache de todos los artistas de todos los escenarios.
  • Validaciones: Evita que una banda sin integrantes pueda crearse, o que el caché sea negativo.

¡Vamos a rockear código! 🤘